Skip to main content

OctoPos EVM — Capabilities and Endpoints

V8.3 (2026-06-19). 8 endpoints, 16 DeFi protocol adapters on Ethereum, 30s position cache, 30s price cache.

Endpoints

All endpoints are GET and read-only. Base URL: https://api-evm-octopos-mainnet.crediolabs.ai.

/v1/evm/supported-chains

Returns the list of chains OctoPos indexes, with per-endpoint supported flags.

curl https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/supported-chains

/v1/evm/balances/:address

Multi-chain ERC-20 + native balances. Defaults to the 13-chain default tag; pass chain_ids to override.

curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/balances/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?chain_ids=1&limit=5'

Returns { total_usd, balances[] }. Each balance carries chain_id, token_address, symbol, decimals, balance, price_usd, value_usd, logo_url, plus optional pool_size and fdv for tokens with DefiLlama metadata.

/v1/evm/stablecoins/:address

Stablecoin-only filter on the balances route. Use this for treasury / float monitoring.

curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/stablecoins/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?chain_ids=1'

/v1/evm/activity/:address

Token transfers + native transactions. Filter by activity_type (send, receive, mint, burn, swap, approve, call) and asset_type (native, erc20, erc721, erc1155).

curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/activity/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?activity_type=swap&limit=10'

/v1/evm/transactions/:address

Raw transactions with optional 4byte decode via ?decode=true. Lower cost than /activity for the same address.

curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/transactions/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?decode=true&limit=10'

/v1/evm/defi/positions/:address

DeFi protocol positions — Aave, Compound, Uniswap, etc. Ethereum mainnet only; other chains return zero protocol positions even when the wallet holds DeFi tokens on those chains.

curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/defi/positions/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?chain_ids=1'

/v1/evm/subscriptions[/:id]

Webhook CRUD for balance, activity, and transaction change notifications.

# Create
curl -X POST https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/subscriptions \
-H 'content-type: application/json' \
-d '{"address":"0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e","chain_ids":[1],"webhook_url":"https://example.com/hook"}'

/v1/positions/:chainId/:address and /v1/contracts/:chainId/:address

Stellar-path-compatible shim. Path-only; no auth, no x402 settlement, no CORS binding. Provided so Stellar clients can hit the same shape against EVM data.

curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/positions/1/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e'

Protocols (16 adapters, Ethereum only)

All 16 DeFi adapters live in packages/evm-adapters/src/adapters/. Every adapter that calls an external protocol restricts itself to chainId === 1 (Ethereum mainnet). The wallet adapter is the only one that reads all 16 chains.

ProtocolCoverage
Wallet (native + ERC-20)All 16 chains
LP DiscoveryEthereum — enumerates Uniswap V2/V3, Curve, Balancer pools
Aave V2Ethereum — supply + borrow positions
Aave V3Ethereum — supply + borrow + collateral switch
Compound V3Ethereum — supply + borrow
Uniswap V2Ethereum — liquidity pool positions
Uniswap V3Ethereum — NFT liquidity positions (uses tokenOfOwnerByIndex)
CurveEthereum — registry-enumerated pools
LidoEthereum — stETH staking balance
MakerEthereum — DSR savings + vault collateral
BalancerEthereum — pool tokens
MorphoEthereum — Blue API GraphQL market data
SkyEthereum — sUSDS vault + USDS savings
PendleEthereum — PT/SY markets (V3 MarketFactory reverted; PT coverage limited to 4 manual addresses)
YearnEthereum — vault share balances
EulerEthereum — EVC v2 borrow positions (supply full; borrow limited)
StaderEthereum — ETHx staking
note

Adapter coverage is Ethereum-only by design. The adapter layer was built to maximise depth on the chain with the deepest DeFi ecosystem and broadest price oracle coverage. Multi-chain DeFi adapter expansion (BNB Venus, Polygon Aave, etc.) is the next phase — P0/P1 priority but not yet scoped.

Known structural gaps

These are properties of the data sources OctoPos depends on. They cannot be fixed without paid API keys, third-party services, or off-chain data.

  1. CEX holdings not visible — OctoPos reads on-chain data only. Binance / Coinbase hot wallets aggregate CEX-held assets not visible on-chain. In the V4 cross-check, 77/196 wallets (39%) showed severe under-reports due to CEX aggregation. There is no on-chain fix; a CEX-data integration would be required to close this gap.
  2. NFT positions not supported — Tier 4 deferral. No protocol adapter reads ERC-721 / ERC-1155 positions.
  3. Token holders distribution not supported — Tier 4 deferral.
  4. Multi-chain DeFi positions not supported — A wallet with BNB-chain DeFi positions (e.g., Venus on BNB) shows zero for those positions even though balances correctly returns the wallet's BNB assets.
  5. Public RPC flakiness — Even with chunking (8 calls), allowFailure:true, and per-URL fallback chains, public RPCs flake ~10% of the time. Some balance reads return partial results during RPC instability.

V8.3 changelog

  • 30-second DefiLlama price cachepackages/evm-adapters/src/prices/defi-llama.ts. Repeated calls within a 30s window return bit-exact identical totals. Reduces cross-check variance vs DeBank from a ~0.05–0.5% per-token drift band to a single coherent snapshot.
  • Per-call multicall retrypackages/evm-adapters/src/lib/multicall-retry.ts. Re-issues only failed contracts with exponential backoff (300/600/1200ms, max 3 attempts). Wired into the wallet adapter.
  • LP discovery on 7 chains — Uniswap V2/V3, Curve, Balancer pool enumeration extended.
  • 13-chain default at /v1/evm/balances — was Ethereum-only by default; now expands to the Sim default tag automatically.
  • Multi-chain aggregation in UI — Total value KPI and card/table views sum across all chains in a multi-chain query rather than only the first.